package top.huhuiyu.ds.sort;
/**
 * 
 * @author Aiden Pearce
 *
 */

import java.util.Arrays;
import java.util.Random;

public class SortDome {
  private static Random random = new Random();
  /**
   * 随机数的取值倍数
   */
  private static final int MUTI = 5;

  /**
   * 生成length长度的随机数数组
   * 
   * @param length
   *          数组长度
   * @return 随机数组
   */
  public static int[] makeRandom(int length) {
    int[] nums = new int[length];
    for (int i = 0; i < nums.length; i++) {
      nums[i] = random.nextInt(length * MUTI);
    }
    return nums;
  }

  /**
   * 显示数组中的length的数组
   * 
   * @param nums
   * @param length
   */
  public static void showArray(int[] nums, int length) {
    for (int i = 0; i < length; i++) {
      System.out.print(nums[i] + " ");
    }
    System.out.println();
  }

  public static void main(String[] args) {
    System.out.println("系统自带排序==================");
    int length = 100000;
    int[] nums = makeRandom(length);
    showArray(nums, 10);
    long start = System.currentTimeMillis();
    //Arrays是系统中数组相关工具方法合集静态类
    //里面有排序，乱序，数组和集合的转换
    Arrays.sort(nums);
    long end = System.currentTimeMillis();
    //printf是string.format的控制台输出
    //%s为占位符，对应后面的参数,%n表示输出换行符
    //下面的格式表示，第一个%s为后面的第一参数length的值
    //第二个%s为后面第二个参数nd-start的值
    System.out.printf("排序%s个数的时间为%s%n", length, end - start);
    //上面函数的等效语句,要注意println是在输出结尾加换行，所以不需要%n
    System.out.println(String.format("排序%s个数的时间为%s",length,end-start));
    //上面函数的等效语句
    System.out.print(String.format("排序%s个数的时间为%s%n", length,end-start));
    showArray(nums, 10);

    // System.out.println("冒泡排序================");
    // int[] nums = makeRandom(10);
    // showArray(nums, nums.length);
    // BubbleSort.sort(nums);
    // showArray(nums, nums.length);
    // System.out.println("快速排序================");
    // nums = makeRandom(10);
    // showArray(nums, nums.length);
    // QuickSort.sort(nums);
    // showArray(nums, nums.length);
    // System.out.println("时间成本");
    // int length = 100000;
    // nums = makeRandom(length);
    // long start = System.currentTimeMillis();
    // BubbleSort.sort(nums);
    // System.out.println("冒泡" + length + "个数的时间成本:" + (System.currentTimeMillis() -
    // start));
    // System.out.println("==========");
    // nums = makeRandom(length);
    // start = System.currentTimeMillis();
    // QuickSort.sort(nums);
    // System.out.println("快速" + length + "个数的时间成本:" + (System.currentTimeMillis() -
    // start));
  }

}
